The processing of packets or frames has traditionally been carried out by a network server. Each packet contains a header and data. The header provides some generic instructions or information, such as IP source or destination information, or control information. However, at times, such as an HTTP request, the instructions may not be contained in the header and can only be ascertained by going beyond the header and delving into the data itself. This is called ‘deep-packet’ processing. The necessity of searching beyond the header into the data unduly increases the amount of time consumed by the network server in processing the packets.
As internet traffic increases, the deep-packet processing functions, such as packet compression, encryption, filtering, classification, and searches are being moved from the network server to the edges of the network where these processing functions can be conducted by so-called edge equipment, such as load balancers, TCP/IP offload equipment, routers, switches, firewall devices and others.
At the network edge, there is a demand for a high-throughput of 10 Gbps or higher deep-packet processing elements. Given that the deep-packet processing functions require a large number of operations on packet data, it is necessary to perform these functions on multiple packets in parallel using multiple processing engines. Some communication protocols require that packets be delivered to the destination in the order of transmission. Situations in which maintaining the sequence of data transmission is particularly useful are voice transmission, such as those involving videos and movies. Therein, it becomes necessary for multiprocessing systems to preserve packet sequences.